/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.model.service;

import com.model.domain.enaho.reporte.ListadosReporte;
import com.model.domain.enaho.reporte.MonitoreoPorCapitulosDetalle;
import com.model.domain.enaho.reporte.MonitoreoPorCapitulosResumen;
import com.model.domain.enaho.reporte.MonitoreoPorViviendas;
import com.model.domain.enaho.reporte.ReporteRecuperacionEnvios;
import com.model.domain.persona.HogarReporte;
import com.model.domain.proceso.envio.carga.EstadoCarga;
import com.model.domain.tiempo.Mes;
import com.model.domain.tiempo.Periodo;
import com.model.domain.ubicacion.Conglomerado;
import com.model.domain.ubicacion.Odei;
import com.model.domain.ubicacion.Vivienda;
import java.sql.Connection;
import java.util.List;

/**
 *
 * @author Rdelacruz
 */
public class MonitoreoTransferenciaService
        extends AbstractService {

    private OdeiService odeiService;
    private MesService mesService;
    private PeriodoService periodoService;
    private ConglomeradoService conglomeradoService;
       
    private ViviendaMarcoService viviendaMarcoService;
    private HogarService hogarService;
    private LogXmlTransferidoService logXmlTransferidoService;
    private ViviendaXmlTransferidoService viviendaXmlTransferidoService;
    

    public List<Odei> getListaOdeis(Connection con) throws Exception {
        return odeiService.findAll(con);
    }

    public List<Mes> getListaMeses(Connection con) throws Exception {
        //return new ArrayList<>();
        return mesService.findAll(con);
    }

    public List<Periodo> getListaPeriodos(Connection con) throws Exception {
        //return new ArrayList<>();
        return periodoService.findAll(con);
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
    public List<Conglomerado> getListaConglomerados(Connection con) throws Exception {
        return conglomeradoService.findAll_codigo(con);
    }
    
    public MonitoreoPorViviendas getMonitoreoPorViviendas(Connection con,
            Vivienda filtro,
            List<Odei> odeis, List<Mes> meses, List<Periodo> periodos) throws Exception {
        //1. CONTRUYENDO OBJETOS AUXILIARES
        ListadosReporte listados = new ListadosReporte();
        listados.setOdeis(odeis);
        listados.setMeses(meses);
        listados.setPeriodos(periodos);
        
        //2. CONSTRUYENDO EL REPORTE
        MonitoreoPorViviendas rep = new MonitoreoPorViviendas();
        viviendaMarcoService.procesar(con,rep,filtro,listados);
        return rep;//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
   
    public MonitoreoPorCapitulosResumen getMonitoreoPorCapitulosResumen(Connection con,
            HogarReporte filtro,
            List<Odei> odeis, List<Mes> meses, List<Periodo> periodos) throws Exception {
        //1. CONTRUYENDO OBJETOS AUXILIARES
        ListadosReporte listados = new ListadosReporte();
        listados.setOdeis(odeis);
        listados.setMeses(meses);
        listados.setPeriodos(periodos);
        
        //2. CONSTRUYENDO EL REPORTE
        MonitoreoPorCapitulosResumen rep = new MonitoreoPorCapitulosResumen();
        hogarService.procesar(con,rep,filtro,listados);
        return rep;//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
    public MonitoreoPorCapitulosDetalle getMonitoreoPorCapitulosDetalle(Connection con,
            HogarReporte filtro,
            List<Odei> odeis, List<Mes> meses, List<Periodo> periodos) throws Exception {
        //1. CONTRUYENDO OBJETOS AUXILIARES
        ListadosReporte listados = new ListadosReporte();
        listados.setOdeis(odeis);
        listados.setMeses(meses);
        listados.setPeriodos(periodos);
        
        //2. CONSTRUYENDO EL REPORTE
        MonitoreoPorCapitulosDetalle rep = new MonitoreoPorCapitulosDetalle();
        hogarService.procesar(con,rep,filtro,listados);
        return rep;//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    public ReporteRecuperacionEnvios getReporteRecuperacionEnvios(Connection con,
            Conglomerado filtro, EstadoCarga filtroEstado,
            List<Odei> odeis, List<Mes> meses, List<Periodo> periodos) throws Exception {
        ListadosReporte listados = new ListadosReporte();
        listados.setOdeis(odeis);
        listados.setMeses(meses);
        listados.setPeriodos(periodos);
        
        ReporteRecuperacionEnvios rep = new ReporteRecuperacionEnvios();
        viviendaXmlTransferidoService.procesar(con,rep,filtro,filtroEstado,true,listados);
                        
        return rep;
    }
    
    public OdeiService getOdeiService() {
        return odeiService;
    }

    public void setOdeiService(OdeiService odeiService) {
        this.odeiService = odeiService;
    }

    public MesService getMesService() {
        return mesService;
    }

    public void setMesService(MesService mesService) {
        this.mesService = mesService;
    }
   

    public PeriodoService getPeriodoService() {
        return periodoService;
    }

    public void setPeriodoService(PeriodoService periodoService) {
        this.periodoService = periodoService;
    }

    public ConglomeradoService getConglomeradoService() {
        return conglomeradoService;
    }

    public void setConglomeradoService(ConglomeradoService conglomeradoService) {
        this.conglomeradoService = conglomeradoService;
    }

  
    public HogarService getHogarService() {
        return hogarService;
    }

    public void setHogarService(HogarService hogarService) {
        this.hogarService = hogarService;
    }
    
    
    public ViviendaMarcoService getViviendaMarcoService() {
        return viviendaMarcoService;
    }

    public void setViviendaMarcoService(ViviendaMarcoService viviendaMarcoService) {
        this.viviendaMarcoService = viviendaMarcoService;
    }

    public LogXmlTransferidoService getLogXmlTransferidoService() {
        return logXmlTransferidoService;
    }

    public void setLogXmlTransferidoService(LogXmlTransferidoService logXmlTransferidoService) {
        this.logXmlTransferidoService = logXmlTransferidoService;
    }

    public ViviendaXmlTransferidoService getViviendaXmlTransferidoService() {
        return viviendaXmlTransferidoService;
    }

    public void setViviendaXmlTransferidoService(ViviendaXmlTransferidoService viviendaXmlTransferidoService) {
        this.viviendaXmlTransferidoService = viviendaXmlTransferidoService;
    }

    
}
